package com.qyx.pmpucat.controller;

import com.qyx.pmpucat.common.result.Result;
import com.qyx.pmpucat.common.result.Results;
import com.qyx.pmpucat.entity.QuestionnaireGroup;
import com.qyx.pmpucat.service.QuestionnaireGroupService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 问卷组控制器
 */
@RestController
@RequestMapping("/questionnaireGroup")
@RequiredArgsConstructor
@Validated
public class QuestionnaireGroupController {

    private final QuestionnaireGroupService questionnaireGroupService;

    /**
     * 创建问卷组
     */
    @PostMapping("/create")
    public Result<Long> createQuestionnaireGroup(@RequestBody @Valid QuestionnaireGroup questionnaireGroup) {
        Long id = questionnaireGroupService.createQuestionnaireGroup(questionnaireGroup);
        return Results.success(id);
    }

    /**
     * 更新问卷组
     */
    @PutMapping("/update")
    public Result<Void> updateQuestionnaireGroup(@RequestBody @Valid QuestionnaireGroup questionnaireGroup) {
        questionnaireGroupService.updateQuestionnaireGroup(questionnaireGroup);
        return Results.success();
    }

    /**
     * 删除问卷组
     */
    @DeleteMapping("/{id}")
    public Result<Void> deleteQuestionnaireGroup(@PathVariable Long id) {
        questionnaireGroupService.deleteQuestionnaireGroup(id);
        return Results.success();
    }

    /**
     * 获取问卷组详情
     */
    @GetMapping("/{id}")
    public Result<QuestionnaireGroup> getQuestionnaireGroupDetail(@PathVariable Long id) {
        QuestionnaireGroup result = questionnaireGroupService.getQuestionnaireGroupDetail(id);
        return Results.success(result);
    }

    /**
     * 获取问卷组列表（不分页）
     */
    @GetMapping("/list")
    public Result<List<QuestionnaireGroup>> getQuestionnaireGroupList(
            @RequestParam(required = false) String title,
            @RequestParam(required = false) Integer status) {
        List<QuestionnaireGroup> result = questionnaireGroupService.getQuestionnaireGroupList(title, status);
        return Results.success(result);
    }

    /**
     * 发布问卷组
     */
    @PutMapping("/publish/{id}")
    public Result<Void> publishQuestionnaireGroup(@PathVariable Long id) {
        questionnaireGroupService.publishQuestionnaireGroup(id);
        return Results.success();
    }

    /**
     * 下线问卷组
     */
    @PutMapping("/offline/{id}")
    public Result<Void> offlineQuestionnaireGroup(@PathVariable Long id) {
        questionnaireGroupService.offlineQuestionnaireGroup(id);
        return Results.success();
    }
} 